//
//  循环双链表.cpp
//  408数据结构
//
//  Created by Cai Yuanhao on 2022/3/26.
//

#include <stdio.h>
#include <stdlib.h>

typedef int ElemType;

typedef struct XDNode{
    ElemType data;
    struct XDNode *next,*prior;
}XDNode,*XDLinklist;

bool init(XDLinklist &L){
    L=(XDLinklist)malloc(sizeof(XDNode));
    if (L==NULL) {
        return false;
    }
    L->next=L;
    L->prior=L;
//    初始化表头的next指向自己
    return true;
}

//在p节点之后插入节点s
bool insert_after(XDLinklist p,XDLinklist s){
    p->next->prior=s;
    s->next=p->next;
    s->prior=p;
    p->next=s;
    return true;
}

//删除p的后继节点
bool del_after(XDLinklist p){
    XDLinklist q=p->next;
    p->next=q->next;
    q->next->prior=p;
    free(q);
    return true;
}
